/*
 * @Author: 0x9DEFA478
 * @Date: 2024-01-13 18:32:46
 * @LastEditTime: 2025-09-14 00:06:32
 * @LastEditors: 0x9DEFA478
 * @Description: 
 * 
 */
#ifndef hConcurrency_H_Concurrency_win_HPP_
#define hConcurrency_H_Concurrency_win_HPP_
#include "./H_Concurrency_Empty.hpp"


namespace H{

  namespace Concurrency{

#ifdef _WIN32
    class Event_win{

      public:
        Event_win();
        ~Event_win()noexcept;

        bool TryAcquire()noexcept{return Acquire(0);}
        void Acquire()noexcept;
        bool Acquire(usize Timeout)noexcept;
        bool Acquire_us(usize Timeout)noexcept;
        void Trigger()noexcept;

      private:
        void* E;
    };

    class Lock_win{

      public:
        Lock_win();
        ~Lock_win()noexcept;

        void Lock()noexcept;
        void Unlock()noexcept;

      private:
        void* L;
    };
#endif

  }
}


#endif //hConcurrency_H_Concurrency_win_HPP_
